import { http } from '@/utils/http'



// IoT 设备 VO
export interface DeviceVO {
  id?: number // 设备 ID，主键，自增
  deviceKey?: string // 设备唯一标识符，全局唯一，用于识别设备
  deviceName?: string // 设备名称，在产品内唯一，用于标识设备
  alarmStatus?: string // 设备告警状态
  alarmDefult?: string // 设备告警定义
  nickname?: string // 设备备注名称，供用户自定义备注
  networkType?: string //联网方式
  serialNumber?: string // 设备序列号
  picUrl?: string // 设备图片
  groupId?: number // 设备分组
  productId?: number // 产品 ID
  productKey?: string // 产品 Key
  deviceType?: number // 设备类型，参见 IotProductDeviceTypeEnum 枚举
  gatewayId?: number // 网关设备 ID，子设备需要关联的网关设备 ID
  state?: number // 设备状态，参见 IotDeviceStateEnum 枚举
  onlineTime?: Date // 最后上线时间
  offlineTime?: Date // 最后离线时间
  activeTime?: Date // 设备激活时间
  ip?: string // 设备的 IP 地址
  firmwareId?: string // 设备的固件编号
  deviceSecret?: string // 设备密钥，用于设备认证，需安全存储
  mqttClientId?: string // MQTT 客户端 ID
  mqttUsername?: string // MQTT 用户名
  mqttPassword?: string // MQTT 密码
  authType?: string // 认证类型（如一机一密、动态注册）
  latitude?: number // 设备位置的纬度
  longitude?: number // 设备位置的经度
  areaId?: number // 地区编码
  address?: string // 设备详细地址
  config?: string // 设备配置，JSON 格式
  mqttConfigId?: number // MQTT 配置 ID
  firmwareVersion: string
}
export const getDevice = (id: number) => {
    return http<any>({ url: `/mqtt/device/get?id=` + id })
}


export type SubscribeWaterVO = {
  id: number // 主键ID
  deviceId: number // 设备ID
  mqttConfigId: number // MQTT配置ID
  topic: string // 主题
  payloadWd: string // 温度
  payloadZd: string // 浊度
  payloadYl: string // 余氯
  payloadPh: string // pH值
  payload: string // 消息内容
  qos: number // 服务质量
  retained: boolean // 是否保留消息
  direction: string // 消息方向
  clientId: string // 客户端ID
  messageId: string // 消息ID
  timestamp: Date // 时间戳
}

export const getHisoryList = (parm: any) => {
  return http<any>({
    method: 'GET',
    url: '/mqtt/subscribe-water/page',
    data: parm
  })
}


export type AlarmRecord =  {
  id: number; // 主键ID
  subscribe_water_id: number; // 订阅客户端ID
  deviceKey: string; // 设备KEY
  alarmType: string; // 报警类型
  dataType: string; // 数据类型
  exceedValue: string; // 报警的值
  alarmInfo: string; // 报警信息
  createTime: string
}

export const getAlermList = (params: any) => {
 return http<any>({
    method: 'GET',
    url: '/mqtt/device-alerm-record/page',
    data: params // 使用data而非params for GET请求
  });
}

export const addDevice = (data: DeviceVO) => {
  return http<any>({
    method: 'POST',
    url: '/mqtt/device/create',
    data: data
  })
}


  // 查询设备最新信息详情
export const  getDeviceLatestByKey= async (deviceKey: string) => {
    return await http<any>({
    method: 'GET',
    url: `/mqtt/device-latest/getDeviceKey`,
    data: { deviceKey: deviceKey }
  })
}

export const getZxt= async (deviceKey: string) => {
    return await http<any>({
    method: 'GET',
    url: '/mqtt/subscribe-water/getZxt',
    data: { deviceKey: deviceKey }
  })
}